package programmierung.aufgabe1;

public class Pair<L, R> {
	private L left;
	private R right;
	
	public Pair(L left, R right) {
		this.left = left;
		this.right = right;
	}
	
	
	
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		if(left != null) {
			result = prime * result + left.hashCode();
		} else {
			result = 0;
		}
		if(right != null) {
			result = prime * result + right.hashCode();
		} else {
			result = 0;
		}
		return result;
	}



	@Override
	public boolean equals(Object obj) {
		if (this == obj)	//Wenn die zu Ueberpruefende Objektreferenz der Testobjektreferenz entspricht
			return true;
		if (obj == null)	//Wenn eine Objektreferenz existiert
			return false;
		if (getClass() != obj.getClass()) //Wenn die Referenz der Klasse oder einer Instanz dieser entspricht
			return false;				  //(pairObject.equals("Teststring" geht nicht da String eine andere Klasse ist und auch keine Instanz von dieser Pair Klasse ist)
		@SuppressWarnings("unchecked")
		Pair<L, R> other = (Pair<L, R>) obj;
		if (left == null) {
			if (other.left != null)
				return false;
		} else if (!left.equals(other.left))
			return false;
		if (right == null) {
			if (other.right != null)
				return false;
		} else if (!right.equals(other.right))
			return false;
		return true;
	}



	public L getLeft() {
		return left;
	}

	public R getRight() {
		return right;
	}
}
